#ifndef __DPS_STRUCT__
#define __DPS_STRUCT__
#include "common.h"
//#include "dps_api.h"

#define DPS_PARA_Max_Size	256

////////////////////////////////////////////////////////
// ConfigPrintService

#define DPS_PARA_ConfigPrintService_Size (sizeof(DPS_PARA_ConfigPrintService))
typedef struct _DPS_PARA_ConfigPrintService_
{
	UINT32 printServiceAvailable;
	UINT8 dpsVersions[ 9 ];
  UINT8 vendorName[ 65 ];
  UINT8 vendorSpecVer[ 9 ];
  UINT8 productName[ 65 ];
  UINT8 serialNo[ 65 ];
  UINT8 reserved;
} DPS_PARA_ConfigPrintService,* PDPS_PARA_ConfigPrintService;

//////////////////////////////////////////////////////////
// print capability


#if 0
#define DPS_CAPA_QUALITY_MAX_NUM          	4
#define DPS_CAPA_PAPER_SIZE_MAX_NUM       	24
#define DPS_CAPA_PAPER_TYPE_MAX_NUM       	4
#define DPS_CAPA_FILE_TYPE_MAX_NUM        	24
#define DPS_CAPA_DATE_PRINT_MAX_NUM       	3
#define DPS_CAPA_FILE_NAME_PRINT_MAX_NUM  	3
#define DPS_CAPA_IMAGE_OPTIMIZE_MAX_NUM   	6
#define DPS_CAPA_LAYOUT_MAX_NUM           	8
#define DPS_CAPA_FIXED_SIZE_MAX_NUM       	20
#define DPS_CAPA_CROPPING_MAX_NUM         	3

#define DPS_PARA_Capability_Qualities_Size			((DPS_CAPA_QUALITY_MAX_NUM<<2)+2)
#define DPS_PARA_Capability_PaperSizes_Size			((DPS_CAPA_PAPER_SIZE_MAX_NUM<<2)+2)
#define DPS_PARA_Capability_PaperTypes_Size			((DPS_CAPA_PAPER_TYPE_MAX_NUM <<2)+2)
#define DPS_PARA_Capability_FileTypes_Size			((DPS_CAPA_FILE_TYPE_MAX_NUM<<2)+2)
#define DPS_PARA_Capability_DatePrints_Size			((DPS_CAPA_DATE_PRINT_MAX_NUM<<2)+2)
#define DPS_PARA_Capability_FileNamePrints_Size		((DPS_CAPA_FILE_NAME_PRINT_MAX_NUM<<2)+2)
#define DPS_PARA_Capability_ImageOptimizes_Size		((DPS_CAPA_IMAGE_OPTIMIZE_MAX_NUM<<2)+2)
#define DPS_PARA_Capability_Layouts_Size				((DPS_CAPA_LAYOUT_MAX_NUM<<2)+2)
#define DPS_PARA_Capability_FixedSizes_Size			((DPS_CAPA_FIXED_SIZE_MAX_NUM<<2)+2)
#define DPS_PARA_Capability_Croppings_Size			((DPS_CAPA_CROPPING_MAX_NUM<<2)+2)

#define DPS_PARA_Capability_Size		(DPS_PARA_Capability_Qualities_Size+ \
									DPS_PARA_Capability_PaperSizes_Size+ \
									DPS_PARA_Capability_PaperTypes_Size+ \
									DPS_PARA_Capability_FileTypes_Size+ \
									DPS_PARA_Capability_DatePrints_Size+ \
									DPS_PARA_Capability_FileNamePrints_Size+ \
									DPS_PARA_Capability_ImageOptimizes_Size+ \
									DPS_PARA_Capability_Layouts_Size+ \
									DPS_PARA_Capability_FixedSizes_Size+ \
									DPS_PARA_Capability_Croppings_Size)
#endif

#define DPS_PARA_Capability_Elem_MaxCount 	24
#define DPS_PARA_Capability_Elem_Size	(sizeof(DPS_PARA_Capability_Elem))
typedef struct _DPS_PARA_Capability_Elem
{
	UINT16 count;
	UINT32 paperSize;
	UINT32 values[DPS_PARA_Capability_Elem_MaxCount];
}DPS_PARA_Capability_Elem,*PDPS_PARA_Capability_Elem;

#if 0
#define DPS_PARA_Capability_ElemArray_MaxCount	 DPS_PARA_Capability_Elem_MaxCount	
#define DPS_PARA_Capability_ElemArray_Size	(sizeof(DPS_PARA_Capability_ElemArray))
typedef struct _DPS_PARA_Capability_ElemArray
{
	UINT16 count;
	DPS_PARA_Capability_Elem elem[DPS_PARA_Capability_ElemArray_MaxCount];
}DPS_PARA_Capability_ElemArray,*PDPS_PARA_Capability_ElemArray;
#endif

/////////////////////////////////////////////////
// start job
#define DPS_PARA_ConfigStartJob_Size (sizeof(DPS_PARA_ConfigStartJob))
typedef struct _DPS_PARA_ConfigStartJob
{
	UINT32 quality;
	UINT32 paperSize;
	UINT32 paperType;
	UINT32 fileType;
	UINT32 datePrint;
	UINT32 fileNamePrint;
	UINT32 imageOptimize;
	UINT32 layout ;
	UINT32 fixedSize;
	UINT32 cropping;
}DPS_PARA_ConfigStartJob,*PDPS_PARA_ConfigStartJob;

#define DPS_PARA_ConfigPrintInfoMaxCount 24
#define DPS_PARA_ConfigPrintInfoMaxCountPerPrint 4
#define DPS_PARA_ConfigPrintInfo_Size (sizeof(DPS_PARA_ConfigPrintInfo))
#define DPS_PARA_ConfigPrintInfo_Size_Min (DPS_PARA_ConfigPrintInfo_Size-10)
typedef struct _DPS_PARA_ConfigPrintInfo
{
	UINT16 croppingArea_x;
	UINT16 croppingArea_y;
	UINT16 croppingArea_w;
	UINT16 croppingArea_h;
	UINT32 fileID;
	UINT16 copies;				/* dex 999 Max */
	UINT8 date[16];				/* buffer size 24 + 1 start of mem alloc */
	UINT8 fileName[14];			/* buffer size 24 + 1 share the mem with date */
	UINT32 prtPID;				/* !!! DPOF restart only 3-digits */
	UINT32 copyID;				/* !!! DPOF restart only 3-digits */	
	UINT8 filePath[2];
}DPS_PARA_ConfigPrintInfo,*PDPS_PARA_ConfigPrintInfo;

/////////////////////////////////////////////////////////
// JobStatus Data 
#define DPS_PARA_JobStatus_Size  (sizeof(DPS_PARA_JobStatus))
typedef struct _DPS_PARA_JobStatus_ {
	UINT8 prtPID[4];
	UINT8 filePath[64];
	UINT8 copyID[4];
	UINT8 progress[16];
	UINT8 imagesPrinted[8];
} DPS_PARA_JobStatus,*PDPS_PARA_JobStatus;

///////////////////////////////////////////////////////////
// DeviceStatus Data 
#define DPS_PARA_DeviceStatus_Size  (sizeof(DPS_PARA_DeviceStatus))
typedef struct _DPS_PARA_DeviceStatus_ {
	UINT32 dpsPrintServiceStatus;
	UINT32 jobEndReason;
	UINT32 errorStatus;
	UINT32 errorReason;
	UINT32 disconnectEnable;
	UINT32 capabilityChanged;
	UINT32 newJobOK;
} DPS_PARA_DeviceStatus,*PDPS_PARA_DeviceStatus;


#endif